#include <iostream>
using namespace std;
// 模板参数并不一定非得是类型。它可以是一个变量
// 1、函数中使用
template <int N>
int multiply(int m)
{
    return N * m;
}
// 2、类中使用
template <typename T, int N>
class Array
{
private:
    T data[N]{};

public:
    void fill(const T &value)
    {
        for (int i{0}; i < N; i++)
        {
            data[i] = value;
        }
    }
};
int main()
{
    int res = multiply<4>(3);
    // int /* multiply<4> */(int m) {
    // return 4 * m;
    // }
    cout << res << endl;
    
    Array<int, 5> a;
    a.fill(42);
    return 0;
}
